EN FR
EN FR


Section: New Results

Type Systems

Participants : Daniel Hirschkoff, Simone Martini, Davide Sangiorgi.

Surveys

In [27], Martini elaborates the history of type systems, focusing on that fundamental period covering the seventies and the early eighties. It was then that types became the cornerstone of the programming language design, passing first from the abstract data type (ADT) movement and blossoming then into the object-oriented paradigm. The paper also discusses how it has been possible that a concept like ADTs, with its clear mathematical semantics, neat syntax, and straightforward implementation, can have given way to objects, a lot dirtier from any perspective the language theorist may take.

In another paper [45], the same author compares the notion of “type” as found in programming languages with that found in mathematical logic, pointing out also some important historical remarks such as the role of the Curry-Howard isomorphism. It is argued that there are three different characters at play in programming languages, all of them now called types: the technical concept used in language design to guide implementation; the general abstraction mechanism used as a modelling tool; the classifying tool inherited from mathematical logic.

Two further surveys concerns behavioural types. The successful application of behavioural types requires a solid understanding of several practical aspects, from their representation in a concrete programming language, to their integration with other programming constructs such as methods and functions, to design and monitoring methodologies that take behaviours into account. The survey [15] provides an overview of the state of the art of these aspects.

The behavioural type of a software component specifies its expected patterns of interaction using expressive type languages, so that types can be used to determine automatically whether the component interacts correctly with other components. Two related important notions of behavioural types are those of session types and behavioural contracts. The paper [24] surveys the main accomplishments of the last twenty years within these two approaches.

Subtyping and dualities in name-passing concurrency

The fusion calculi are simplifications of the π-calculus in which input and output are symmetric and restriction is the only binder. In [23], Hirschkoff et al. highlight a major difference between these calculi and the π-calculus from the point of view of types, proving some impossibility results for subtyping in fusion calculi. A modification of fusion calculi is then proposed that allows one to import subtype systems, and related results, from the π-calculus, and examine the consequences of such modifications on theory and expressiveness of the languages.